Análisis de diversidad

Objetivos

Explorar el flujo de Qiime2 para analizar la diversidad microbiana, considerando la influencia de la profundidad de muestreo, la dependencia de las probabilidades en la evaluación de la diversidad, y realizar cálculos de índices de diversidad junto con curvas de rarefacción.

Usted obtiene los mismos datos del Taller pasado, amplicones de 16s RNA de peces de mar y río, con la particularidad de que esta vez cada pez no tiene la misma cantidad de lecturas. Usted debe realizar análisis de diversidad de estas secuencias teniendo en cuenta la cantidad de datos que está asignando a cada análisis.

I. Preparación de ambiente de trabajo

  1. Ingrese a la cuenta del clúster.

  2. En vez de crear una carpeta copiara la carpeta completa de datasets

  3. Copie todo el directorio de Datasets/Taller_4/ a su directorio Taller4

  4. Ejecute los comandos de este taller en una sesión interactiva preferiblemente con 10G de memoria y al menos 4 cpus per task.

  5. Cargue el módulo de QIIME2 disponible en el clúster.

A lo largo del taller tendrá menos ayudas que en anterior, de no saber que ingresar en los flags de los comandos use –help para ver que archivos requiere. Anexe también imágenes de los pasos realizados para el resto del taller

II. Asignación taxonómica

  1. primero va a realizar una asignación taxonómica de los datos con el plugin de sklearn utilizando la base de datos anteriormente entrenada de SILVA.

En la carpeta que copió verá el archivo clasificación.sh. Primero modifique para que las rutas absolutas coincidan con sus archivos y segundo ejecútelo con sbatch (es decir como un job) ¿Qué hacer si no sabe si está corriendo?: utilice el comando squeue –u $USER y busque en la primera columna su código, si no está allí es porque no está corriendo y deberá ejecutarlo de nuevo.

  1. una vez obtenido el taxonomy.qza realizará la diferentes visualizaciones de este artefacto con los siguientes comandos:
qiime metadata tabulate\
    --m-input-file taxonomy.qza\
    --o-visualization taxonomy.qzv
qiime taxa barplot\
    --i-table feat-table-T4.qza\
    --i-taxonomy taxonomy.qza\
    --m-metadata-file metadata.tsv\
    --o-visualization taxa-bar-plots.qzv

Para entregar:

  • Anexe la visualización de la taxonomía y de los Bar plots en Qiime view organizándolos por su locación

  • Observe y señale que acciones le permite Qiime view realizar al archivo de visualización.

  • Anexe Bar plots con nivel taxonómico de filum y género, y señale las diferencias en las abundancias entre dichos gráficos.

III. Analisis de diversidad alfa

Recordemos algunas cosas: En el taller pasado ejecutaron dada2 y obtuvieron varios archivos de salida. Entre ellos la tabla de ASVs. Para este taller los datos serán los mismos (10 peces de mar y río) los cuales habrán cambiado un poco con esta tabla usted podrá realizar los análisis de este Taller

  1. Lo primero a realizar será usar el plugin de alpha diversity de qiime para obtener 3 índices de alfa diversidad: shannon, simpson y chao1
qiime diversity alpha\
    --i-table feat-table-T4.qza\
    --p-metric X\
    --o-alpha-diversity X.qza
  1. Ahora visualice los índices de diversidad obtenidos en qiime view con el comando:
qiime diversity alpha-correlation\
    --i-alpha-diversity X\
    --m-metadata-file X\
    --o-visualization X.qzv

Para entregar:

  • Analice este índice diferenciando por locación (río vs mar) en cada métrica

IV. Rarificar los datos

  1. Ahora espere. Tómese un momento para preguntarse si lo que acaba de hacer está del todo bien… ¡Acaba de realizar un análisis sin rarificar sus datos!

Para entregar:

  • Porqué es importante realizar rarefacción de los datos al hacer análisis de diversidad y que pasaría si se omite dicho paso.
  1. Ahora aprenderán a rarificar: lo primero será visualizar un summary de su feature table con el siguiente comando:
qiime feature-table summarize\
    --i-table feat-table-T4.qza\
    --o-visualization X.qzv\
    --m-sample-metadata-file X

Al visualizar este archivo qzv podrá observar una tabla muy larga con los conteos de reads para cada muestra (pez).

Para entregar:

  • ¿Cuál de esos valores escogería para hacer la rarefacción y por qué?

  • Vuelva a realizar la alfa diversidad con los mismos tres índices y señale las principales diferencias. Puede realizar esto con el comando que se muestra a continuación y después visualice como en el punto anterior:

qiime diversity alpha-rarefaction\
    --i-table feat-table-T4\
    --p-max-depth X\
    --p-metrics X\
    --m-metadata-file X\
    --o-visualization X.qzv\

V. Análisis de diversidad beta

  1. Por último aprenderá a realizar diversidad beta con un plugin llamado core-metrics. Lo primero será realizar los árboles filogenéticos como en el taller anterior:
qiime phylogeny align-to-tree-mafft-fasttree \
    --i-sequences 16s-rep-seqs.qza\
    --o-alignment aligned-reps.qza\
    --o-masked-alignment masked-aligned.qza\
    --o-tree unrooted-tree.qza\
    --o-rooted-tree rooted-tree.qza
  1. Por último realizará los análisis de core metrics, tenga en cuenta que los resultados serán enviados a una carpeta que usted dará nombre, lo podrá ejecutar con el siguiente comando:
qiime diversity core-metrics-phylogenetic\
    --i-phylogeny rooted-tree.qza\
    -i-table feat-table-T4.qza\
    --p-sampling-depth X\
    --m-metadata-file metadata-Taller4.tsv\
    --output-dir core-metrics-results

Para entregar:

  • Obtendrá varios archivos de visualización, Analice los resultados de bray-curtis, unweighted unifrac y unweighted unifrac haciendo diferenciación de colores entre los peces de río y los de mar.
VI. Análisis de diversidad usando microviz

Para este punto usted ya habrá aprendido a realizar análisis de diversidad en Qiime2, pero ahora aprenderá a realizarlos en R. Para esto usará el paquete microviz en R.

  1. Luego de instalar el paquete, podrá ingresar los archivos que resultado del análisis y preprocesarlos correctamente:
OTU <- vroom("OTU_table.txt", delim = "\t", col_names = T)
Tax <- vroom("Tax_table.txt", delim = "\t", col_names = T)
Metadata <- vroom("Metadata_table.txt", delim = "\t", col_names = T)

Algunos reajustes a la tabla de OTU y Metadata:

Metadata <- column_to_rownames(Metadata, var = "sampleID") 
META <- sample_data(Metadata)
OTU <- OTU |>
  column_to_rownames(var = "otuID")

OTU <- as.matrix(OTU)
Tax <- Tax |>
  column_to_rownames(var = "otuID")

Tax <- as.matrix(Tax)
  1. Ahora podra crear una instancia de los archivos en una estructura conocida como phyloseq
OTUps <- otu_table(OTU, taxa_are_rows = TRUE)
TAXps <- tax_table(Tax)

ps0 <- phyloseq(OTUps, TAXps)
ps0

phyloseqOBJ <- merge_phyloseq(ps0,META)
  1. Explore los datos con el siguiente comando:
ord_explore(phyloseqOBJ)
  1. Ahora podrá hacer manipulación de los datos, filtrarlos y seleccionar los que desee para el análisis. Por ejemplo, Podemos filtrar usando el archivo de metadatos. usando ps_filter() podemos mantener sólo las muestras con sample_data que coincidan con una o más condiciones:
partial_ps <- phyloseqOBJ |>
  ps_filter(
    gender == "female",
    activity %in% c("mild", "severe"),
    age >= 13
  )
  1. Fijar la taxonomía: microviz no puede manejar los niveles taxonómicos vacíos por lo que para las OTU con baja resolución taxonómica, se debe utilizar el nivel superior.
tax_table(phyloseqOBJ)[40:54, 4:7]

Se observan varios NA, luego podemos fijarla usando:

phyloseqOBJ <- phyloseqOBJ |>
  tax_fix()

tax_table(phyloseqOBJ)[40:54, 4:7]
  1. Un paso importante en los análisis de diversidad es remover las muestras que no tienen suficientes lecturas es decir de baja abundancia y prevalencia.
phyloseqOBJ <- phyloseqOBJ |>
  tax_filter(
  min_prevalence = 0.1,
  prev_detection_threshold = 1,
  min_total_abundance = 0,
  min_sample_abundance = 0,
  tax_level = NA
)
1
Los OTU tienen que estar en el 10% de las muestras.
2
Recuento mínimo requerido (o valor) para que un taxón se considere presente en esa muestra.

Ahora bien, nos podemos preguntar varias cosas sobre los datos, para esto debemos hacer varias transformaciones.

  1. Transformación de los datos. La transformación de los datos dependerá del tipo de métrica o análisis que se vaya a utilizar:

Considere la posibilidad de transformar los recuentos microbianos, por ejemplo, utilizando la transformación “clr” (centred log ratio), que a menudo se recomienda para los datos de composición (como los datos de secuenciación)

Algunos métodos, como PCoA, requieren una matriz de distancias entre pares de muestras, Normalmente NO debe transformar sus datos cuando utilice un método basado en distancias.

phyloseqOBJ |>
  tax_transform(trans = "clr", rank = "Genus")
phyloseqOBJ |>
  tax_transform(trans = "identity", rank = "Genus") |>
  dist_calc("bray")
  1. Graficos de ordenamiento de datos: PCA y PCoA.

El Análisis de Componentes Principales (PCA) se destaca por ser un método no restringido que prescinde de una matriz de distancias. En lugar de utilizar distancias, PCA trabaja directamente con las variables microbianas transformadas, evitando así la necesidad de emplear dist_calc(). Para llevar a cabo la ordenación, se utiliza ord_calc(), que agrega esta información al objeto psExtra. Posteriormente, la creación del gráfico de dispersión ggplot2 se realiza mediante ord_plot().

phyloseqOBJ |>
  tax_transform("clr", rank = "Genus") |> 
  ord_calc(method = "PCA") |>
  ord_plot(
    color = "ibd",
    shape = "DiseaseState",
    plot_taxa = 1:5,
    size = 2
    ) +
  scale_colour_brewer(palette = "Dark2")
1
Cuando no se proporciona ninguna matriz de distancias ni restricciones, PCA es el método de ordenación por defecto/automático.

El análisis de coordenadas principales también es un método sin restricciones, pero requiere una matriz de distancias. En un contexto ecológico, una medida de distancia (o más generalmente de “disimilitud”) indica lo diferentes que son un par de ecosistemas (microbianos). Puede calcularse de muchas formas.

phyloseqOBJ |>
  tax_transform("identity", rank = "Genus") |>
  dist_calc(dist = "jaccard", binary = TRUE) |>
  ord_calc("PCoA") |>
  ord_plot(color = "ibd", shape = "DiseaseState", size = 2) +
  scale_colour_brewer(palette = "Dark2")
  1. Análisis de redundancia (RDA)

El análisis de redundancia (RDA) es un método de ordenación restringida. Muestra la variación microbiana que también puede ser explicada por las variables de restricción seleccionadas.

Por detras, se crea un modelo de regresión lineal para cada variable de abundancia microbiana (utilizando las restricciones como variables explicativas) y se realiza un PCA utilizando los valores ajustados de las abundancias microbianas.

Traducción realizada con la versión gratuita del traductor www.DeepL.com/Translator

phyloseqOBJ |>
  ps_mutate(
    IBD = as.numeric(ibd == "ibd"),
    Female = as.numeric(gender == "female"),
    Abx. = as.numeric(abx == "abx")
  ) |>
  tax_transform("clr", rank = "Genus") |>
  ord_calc(constraints = c("IBD", "Female", "Abx."), method = "RDA") |>
  ord_plot(
    colour = "DiseaseState", 
    size = 2,
    alpha = 0.5,
    shape = "active",
    plot_taxa = 1:8
  )
  1. Análisis de composición de comunidades (CCA).
phyloseqOBJ |>
  ps_filter(gender == "female") |>
  comp_barplot(
    tax_level = "Genus",
    label = "DiseaseState",
    n_taxa = 15,
    taxon_renamer = function(x) stringr::str_replace_all(x, "_", " "),
    other_name = "Other genera",
    merge_other = FALSE,
    bar_width = 0.7,
    bar_outline_colour = "grey5"
  ) +
  coord_flip()
1
Nombrar una variable alternativa para etiquetar el eje
2
Dar colores únicos a más taxones
3
Eliminar los guiones bajos
4
Establecer un nombre personalizado para la categoría “Otros”
5
Dividir la categoría “Otros” para mostrar la diversidad alfa
6
Reducir la anchura de la barra al 70% de una fila
7
Ws el valor por defecto (utilice NA para eliminar los contornos)